home *** CD-ROM | disk | FTP | other *** search
/ IRIX Development Foundation for IRIX 6.4 / SGI IRIX 6.4 Development Foundation.iso / docs6.4 / relnotes / compiler_dev / ch3.z / ch3
Text File  |  1997-09-11  |  32KB  |  792 lines

  1.  
  2.  
  3.  
  4.                                                - 1 -
  5.  
  6.  
  7.  
  8.                     Base Development 7.2 Release Notes
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.                                                - 2 -
  69.  
  70.  
  71.  
  72.                     DDDDooooccccuuuummmmeeeennnntttt NNNNuuuummmmbbbbeeeerrrr 000000008888----1111777788882222----000033330000
  73.  
  74.  
  75.  
  76.                     3.  _N_e_w__F_e_a_t_u_r_e_s__o_f__T_h_i_s__R_e_l_e_a_s_e
  77.  
  78.                     The features in this chapter are new or
  79.                     significantly changed in the Base Compiler
  80.                     Development software since the MIPSpro 7.1
  81.                     release.  Other older features of note are also
  82.                     discussed.
  83.  
  84.  
  85.                     3.1  _N_e_w__A_u_t_o_m_a_t_i_c__P_a_r_a_l_l_e_l_i_z_a_t_i_o_n__O_p_t_i_o_n
  86.  
  87.  
  88.                     The 7.2 release of the MIPSpro compilers marks a
  89.                     major revision of the auto-parallelizer. The new
  90.                     product incorporates automatic parallelization
  91.                     into the other optimizations performed by the
  92.                     MIPSpro compilers.  Previous versions relied on
  93.                     preprocessors to provide source-to-source
  94.                     conversions prior to compilation. This change
  95.                     provides several benefits to developers:
  96.  
  97.                     Automatic parallelization is integrated with
  98.                     optimizations for single processors
  99.  
  100.                     A set of options and pragmas consistent with the
  101.                     rest of the MIPSpro compilers
  102.  
  103.                     Better run-time and compile-time performance
  104.  
  105.                     For more information, please refer to the
  106.                     auto_p(5) man pages.
  107.  
  108.                     NOTE: In order to run the new automatic
  109.                     parallelization, you must purchase the MIPSpro
  110.                     Auto Parallelization Option (SC4-APO-7.2) and
  111.                     install the license for it (FEATURE name string
  112.                     = auto_pp).
  113.  
  114.  
  115.  
  116.                     3.2  _C_o_m_p_i_l_e_r__S_y_s_t_e_m
  117.  
  118.                     This section lists changes and additions to
  119.                     compilers and development tools since the
  120.                     MIPSpro 7.1 release.
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.                                                - 3 -
  135.  
  136.  
  137.  
  138.                     3.3  _N_e_w__O_p_t_i_o_n_s__a_n_d__D_e_f_a_u_l_t_s
  139.  
  140.  
  141.                     A new -_D_E_B_U_G:_o_p_t_i_o_n control group has been
  142.                     created to allow insertion of code to assist in
  143.                     the debugging of programs.  For example,
  144.                     -_D_E_B_U_G:_d_i_v__c_h_e_c_k=_N replaces -_T_E_N_V:_c_h_e_c_k__d_i_v=_N
  145.                     and the 7.2 compiler, by default, inserts code
  146.                     to check for divide by zero (N=1).
  147.  
  148.                     _N_O_T_E:  The default value for -_T_E_N_V:_c_h_e_c_k__d_i_v=_N
  149.                     under MIPSpro 7.1 was N=0 (no checks).
  150.  
  151.                     For more information, please refer to the _c_c(1)
  152.                     and _D_E_B_U_G__g_r_o_u_p(5) man pages.
  153.  
  154.                     The -_L_I_S_T: options control group has been
  155.                     enhanced to the create a listing file (.l) that
  156.                     contains the values of all flags  modified,
  157.                     directly in the command line, or indirectly as a
  158.                     side effect of other options. For example:
  159.  
  160.                     % cc -n32 -LIST:options=ON foo.c
  161.  
  162.                     will create foo.l which contains a listing that
  163.                     contains the default values of certain options
  164.                     from the -OPT, -LNO, -TARG and -TENV option
  165.                     control groups.
  166.  
  167.                     The following command:
  168.  
  169.                     % cc -n32 -LIST:all_options=ON foo.c
  170.  
  171.                     will create foo.l which contains a listing that
  172.                     contains the default values of all options from
  173.                     all of the option control groups.
  174.  
  175.                     For more information, please refer to the _c_c(1)
  176.                     man page.
  177.  
  178.  
  179.  
  180.                     3.4  _O_b_s_o_l_e_t_e__O_p_t_i_o_n_s
  181.  
  182.  
  183.                     Several compile-time flags have been obsoleted.
  184.                     These include: -_T_E_N_V:_m_i_s_a_l_i_g_n_e_m_n_t=_N,
  185.                     -_T_E_N_V:_a_l_i_g_n__e_x_t_e_r_n=_N and -_T_E_N_V:_a_l_i_g_n_e_d=_T_R_U_E.
  186.                     Their use will generate a warning message in
  187.                     both the compiler front-end and backend. For
  188.                     example:
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.                                                - 4 -
  201.  
  202.  
  203.  
  204.                     % cc -n32 -TENV:misalignment=3 reshape.c
  205.                     Warning: Obsolete option "-TENV:misalignment=3" -- ignored
  206.                     Warning: Obsolete option "-TENV:misalignment=3" -- ignored
  207.  
  208.                     The -_T_E_N_V:_v_a_r_a_r_g_s__p_r_o_t_o_t_y_p_e_s=_T_R_U_E flag has been
  209.                     replaced by -_D_E_B_U_G:_v_a_r_a_r_g_s__p_r_o_t_o_t_y_p_e_s=_T_R_U_E.
  210.  
  211.                     For more information, please refer to the _c_c(1)
  212.                     and _D_E_B_U_G__g_r_o_u_p(5) man pages.
  213.  
  214.  
  215.  
  216.                     3.5  _C_o_m_p_i_l_e_r__D_e_f_a_u_l_t_s
  217.  
  218.                     When invoking the compiler, ----33332222 ----mmmmiiiippppssss2222 is
  219.                     assumed on all machines except those based on
  220.                     the R8000 processor. There, the compilations
  221.                     default to ----66664444 ----mmmmiiiippppssss4444. These defaults can, of
  222.                     course, be overridden at the command line or
  223.                     through the use of the _S_G_I__A_B_I environment
  224.                     variable. For more information on these flags,
  225.                     please refer to the _c_c(1), _f_7_7(1) and _a_b_i(5) man
  226.                     pages.
  227.  
  228.                     The MIPSpro 7.1 compiler introduced a new method
  229.                     by which the user can customize the Application
  230.                     Binary Interface (ABI), instruction set
  231.                     architecture (ISA) and processor type used in
  232.                     compilations where they are not explicitly
  233.                     specified.  Under this method, the
  234.                     COMPILER_DEFAULTS_PATH environment variable can
  235.                     be set to a colon separated list of paths where
  236.                     the compiler will look for a _c_o_m_p_i_l_e_r._d_e_f_a_u_l_t_s
  237.                     file. If no _c_o_m_p_i_l_e_r._d_e_f_a_u_l_t_s file is found or
  238.                     if the environment variable is not set, the
  239.                     compiler looks for /_e_t_c/_c_o_m_p_i_l_e_r._d_e_f_a_u_l_t_s.  If
  240.                     that file is not found either, the compiler
  241.                     resorts to the built-in defaults described in
  242.                     the _c_c(1)man pages and above.  For a description
  243.                     of the specification format of this file, please
  244.                     refer to the _c_c(1)man pages.
  245.  
  246.  
  247.  
  248.                     3.6  _W_H_I_R_L _I_n_t_e_r_m_e_d_i_a_t_e _O_b_j_e_c_t _F_i_l_e _F_o_r_m_a_t
  249.                          _C_h_a_n_g_e_s
  250.  
  251.  
  252.                     The format of WHIRL Intermediate Object files
  253.                     has changed.  If you have WHIRL intermediate
  254.                     (.o) files left over from compilations using
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.                                                - 5 -
  267.  
  268.  
  269.  
  270.                     MIPSpro 7.1 with interprocedural optimization
  271.                     enabled (i.e. -IPA), you must recompile the
  272.                     entire set of files.
  273.  
  274.  
  275.                     3.7  _A_B_I__D_e_v_e_l_o_p_m_e_n_t
  276.  
  277.                     For information about ABI development issues,
  278.                     see the man pages _a_b_i_c_c(_1), _a_b_i_l_d(_1),
  279.                     _c_h_e_c_k__a_b_i__c_o_m_p_l_i_a_n_c_e, _c_h_e_c_k__a_b_i__i_n_t_e_r_f_a_c_e and
  280.                     _c_h_e_c_k__f_o_r__s_y_s_c_a_l_l_s.
  281.  
  282.                     3.8  _C_o_n_t_r_o_l_l_i_n_g__CCCC_GGGG__c_o_m_p_i_l_e_r__o_p_t_i_m_i_z_a_t_i_o_n_s
  283.  
  284.                     _C_G is the code-generation part of the compiler.
  285.                     There are choices to be made in many parts of
  286.                     _C_G, e.g.  what conditional constructs should be
  287.                     if-converted, or how much should a loop be
  288.                     unrolled.  In most cases the compiler should be
  289.                     making reasonable decisions.  But there are
  290.                     still times when performance can be improved by
  291.                     modifying the default behavior.
  292.  
  293.                     The following sections describe a few of the
  294.                     ways that _C_G can be controlled by the user.
  295.  
  296.                        +o Non-loop if-conversion can be turned off
  297.                          with -_C_G:_i_f_c__n_o_n__l_o_o_p=_o_f_f.  Currently non-
  298.                          loop if-conversion only applies to simple
  299.                          if-then or if-then-else constructs with a
  300.                          very few conditionally executed
  301.                          instructions, so it should usually be
  302.                          advantageous to do the if-conversion.  (In
  303.                          fact we may increase the amount of this
  304.                          kind of if-conversion we do in future
  305.                          releases).  One reason the if-conversion
  306.                          could be sub-optimal is that one of the two
  307.                          paths through the code might be rarely
  308.                          executed.  (This can be controlled with
  309.                          -_C_G:_b_o_d_y__f_r_e_q__f_b=_n.  If some block in the
  310.                          loop has frequency less than 1/n times the
  311.                          frequency of the loop head, if-conversion
  312.                          for that loop is disabled.)
  313.  
  314.                        +o If-conversion of innermost loops is
  315.                          disabled with -_C_G:_i_f__c_o_n_v_e_r_s_i_o_n=_o_f_f.  The
  316.                          most likely reason that this would be
  317.                          useful is that if-conversion has increased
  318.                          the number of instructions in the loop by a
  319.                          lot, and the loop is Software Pipelined, so
  320.                          that there is no opportunity for
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.                                                - 6 -
  333.  
  334.  
  335.  
  336.                          reverse_if_conversion to undo the damage.
  337.                          Another way to protect against this
  338.                          possibility is by setting the value of
  339.                          -_C_G:_b_o_d_y__i_f_c__r_a_t_i_o.  For example, if
  340.                          -_C_G:_b_o_d_y__i_f_c__r_a_t_i_o=_2, and the number of
  341.                          instructions in the loop grows by more than
  342.                          a factor of 2 due to if-conversion, then
  343.                          the if-conversion will be undone (and of
  344.                          course there will then be no opportunity to
  345.                          Software Pipeline that loop).
  346.  
  347.                        +o Cross iteration optimizations can be
  348.                          disabled with -_C_G:_v_e_c_t_o_r__r_w__r_e_m_o_v_a_l=_o_f_f
  349.                          (for read-read or read-write
  350.                          optimizations), -_C_G:_v_e_c_t_o_r__w_w__r_e_m_o_v_a_l=_o_f_f
  351.                          (for write-write optimizations), and/or
  352.                          -_C_G:_c_r_o_s_s__i_t_e_r__c_s_e__r_e_m_o_v_a_l=_o_f_f (for common
  353.                          sub-expression elimination).  The reason to
  354.                          do this is that these optimizations can
  355.                          increase register pressure.
  356.  
  357.                        +o The unroll amount may be increased or
  358.                          decreased.  There is a heuristic controlled
  359.                          by -_O_P_T:_u_n_r_o_l_l__a_n_a_l_y_s_i_s (on by default)
  360.                          which is generally trying to minimize
  361.                          unrolling, because less unrolling leads to
  362.                          smaller code size and faster compilation.
  363.                          Usually the only thing that makes it unroll
  364.                          too much is its attempt to minimize the
  365.                          cost of penalties for taken branches.  If
  366.                          you set the penalty for such a branch to 0
  367.                          (-_C_G:_b_r_a_n_c_h__t_a_k_e_n__p_e_n_a_l_t_y=_0), or increase
  368.                          the cost for taken branches that the
  369.                          heuristic will tolerate (increase the value
  370.                          of -_C_G:_u_n_r_o_l_l__a_n_a_l_y_s_i_s__t_h_r_e_s_h_o_l_d from its
  371.                          default value of .1), you can probably
  372.                          avoid having loops unrolled too much.  You
  373.                          can also change the upper bound for the
  374.                          amount of unrolling with -_O_P_T:_u_n_r_o_l_l__t_i_m_e_s
  375.                          (default is 8) or -_O_P_T:_u_n_r_o_l_l__s_i_z_e (the
  376.                          number of instructions in the unrolled
  377.                          body, current default is 80).  In case the
  378.                          heuristic is limiting unrolling too much,
  379.                          it can be disabled with
  380.                          -_O_P_T:_u_n_r_o_l_l__a_n_a_l_y_s_i_s=_o_f_f.
  381.  
  382.                        +o Software Pipelining can be disabled with
  383.                          -_O_P_T:_s_w_p=_o_f_f.  As far as CG is concerned,
  384.                          -_O_3 -_O_P_T:_s_w_p=_o_f_f is the same as -_O_2.
  385.                          However, since LNO does not run at -_O_2, the
  386.                          input to CG can be very different, and the
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.                                                - 7 -
  399.  
  400.  
  401.  
  402.                          available aliasing information can be very
  403.                          different.
  404.  
  405.                        +o Reverse_if_conversion for non SWP'd loops
  406.                          can be disabled with -_C_G:_r_e_v_e_r_s_e__i_f=_o_f_f.
  407.  
  408.                     3.9  _C_h_a_n_g_e_s__t_o__dddd_bbbb_xxxx_(_1_)
  409.  
  410.                        +o _d_b_x has been enhanced to allow debugging of
  411.                          Fortran 90 allocatable arrays.
  412.  
  413.                        +o _d_b_x has been enhanced to allow debugging of
  414.                          Fortran 90 assumed shape arrays.
  415.  
  416.                        +o _d_b_x has been enhanced to allow debugging of
  417.                          C++ programs created with the -gslim
  418.                          option.  This option limits the amount of
  419.                          debugging information generated by the C++
  420.                          compiler for class definitions.  You should
  421.                          consider using this option on large
  422.                          applications when you experience bloated
  423.                          object files, executables, or DSOs when
  424.                          compiling with -g. For more information
  425.                          refer to the CC(1) man pages.
  426.  
  427.                        +o _d_b_x has been enhanced to allow debugging of
  428.                          C++ code that contains exception handlers.
  429.                          For more information, refer to the _D_B_X
  430.                          _U_s_e_r'_s _G_u_i_d_e.
  431.  
  432.                        +o _d_b_x has been enchanced to support pthreads
  433.                          debugging.  For more information, refer to
  434.                          the _D_B_X _U_s_e_r'_s _G_u_i_d_e.
  435.  
  436.                     3.10  _C_h_a_n_g_e_s__t_o__t_h_e__l_i_n_k_e_r__llll_dddd_(_1_)
  437.  
  438.  
  439.                     This linker provides some new features and
  440.                     better performance. For more information refer
  441.                     to the _l_d(1) man page.
  442.  
  443.                        +o As of release 5.0.1, the linker can adjust
  444.                          executables to avoid certain problems with
  445.                          early versions of the R4000.  If the
  446.                          ----nnnnoooo____jjjjuuuummmmpppp____aaaatttt____eeeeoooopppp flag is on (it is on by
  447.                          default), small amounts of padding are
  448.                          added between component objects to avoid
  449.                          placing a branch instruction at the end of
  450.                          a page.  Slightly smaller executables and
  451.                          significantly faster executables can result
  452.                          by turning this option off (using the
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.                                                - 8 -
  465.  
  466.  
  467.  
  468.                          ----aaaalllllllloooowwww____jjjjuuuummmmpppp____aaaatttt____eeeeoooopppp flag).  Binaries built
  469.                          either way should be compatible across all
  470.                          Silicon Graphics systems, but those made
  471.                          with ----nnnnoooo____jjjjuuuummmmpppp____aaaatttt____eeeeoooopppp (the default) often
  472.                          show performance gains on R4000 systems.
  473.                          These flags are irrelevant for programs
  474.                          compiled with ----mmmmiiiippppssss4444 because the R8000 and
  475.                          R10000 processors do not have this hardware
  476.                          bug and no padding is performed by the
  477.                          linker.
  478.  
  479.                          However, early versions of the R5000 may
  480.                          have problems if a jump or branch
  481.                          instruction occurs at an address 8 bytes
  482.                          before the end of an odd-numbered page, and
  483.                          if a load or store instruction immediately
  484.                          follows the jump or branch instruction. The
  485.                          6.2 and above releases of the linker work
  486.                          around this problem by padding sections of
  487.                          object files that exhibit the
  488.                          characteristics described above. This
  489.                          occurs by default for object files compiled
  490.                          for ----mmmmiiiippppssss4444. Binaries can be built without
  491.                          this fix by using the
  492.                          ----aaaalllllllloooowwww____rrrr5555kkkk____jjjjuuuummmmpppp____aaaatttt____eeeeoooopppp option.
  493.  
  494.                        +o The 6.2 release of the linker introduced an
  495.                          experimental new feature enabled by the
  496.                          ----mmmmuuuullllttttiiiiggggooootttt option. If you experience GOT
  497.                          Overflow problems in building your
  498.                          applications, you should try relinking with
  499.                          the ----mmmmuuuullllttttiiiiggggooootttt option as an alternative to
  500.                          recompiling with ----xxxxggggooootttt.
  501.  
  502.                        +o New options have been added to _l_d(1) for
  503.                          aligning variables in the global
  504.                          uninitialized data area (_b_s_s).  See the
  505.                          manual page for _l_d(1) for options with
  506.                          names beginning with ----XXXX.  These new options
  507.                          are unique to IRIX and might change across
  508.                          releases.
  509.  
  510.                     3.11  _A_s_s_e_m_b_l_e_r__(_aaaa_ssss_(_1_)_)
  511.  
  512.                        +o As of 6.2, the  assembler supports 64-bit
  513.                          instructions, and can generate 64-bit ELF
  514.                          object files.  The COFF format is not
  515.                          supported. The 64-bit and N32 objects
  516.                          contain DWARF debugging support rather than
  517.                          MDEBUG.
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.                                                - 9 -
  531.  
  532.  
  533.  
  534.                        +o The calling conventions and register usage
  535.                          for 64-bit objects is different from the
  536.                          32-bit conventions, so you should become
  537.                          familiar with the new conventions.  The
  538.                          _M_I_P_S_p_r_o _6_4-_B_i_t _P_o_r_t_i_n_g _a_n_d _T_r_a_n_s_i_t_i_o_n _G_u_i_d_e
  539.                          is useful for porting code from 32 to 64
  540.                          bits.  Also see the standard include files
  541.                          <_r_e_g_d_e_f._h> and <_a_s_m._h> which are
  542.                          parameterized for 32-bit or 64-bit code.
  543.  
  544.                        +o Most of the optimizations like software
  545.                          pipelining and cross-basic-block scheduling
  546.                          have been removed from the assembler; these
  547.                          optimizations are now done in the back-end,
  548.                          and thus only happen for high-level code.
  549.                          The assembler still does instruction
  550.                          scheduling for the user.
  551.  
  552.                        +o There are three new assembler directives
  553.                          for the generation of 64-bit PIC
  554.                          (Position-Independent Code).   These
  555.                          directives are ignored if not doing a 64-
  556.                          bit shared (PIC) compile.
  557.  
  558.                        +o  ._c_p_s_e_t_u_p _r_e_g, _r_e_g_2/_o_f_f_s_e_t, _l_a_b_e_l
  559.  
  560.                          By convention, reg == t9, and the label is
  561.                          the procedure entry.  The second argument
  562.                          can be either another register (for the
  563.                          case of a leaf routine with no frame) or a
  564.                          stack offset, and is used to store the
  565.                          value of $gp.  This directive expands into:
  566.  
  567.                          ssssdddd      ggggpppp,,,, ooooffffffffsssseeeetttt((((sssspppp))))
  568.                          lllluuuuiiii     ggggpppp,,,, %%%%hhhhiiii((((%%%%ggggpppp____rrrreeeellll((((llllaaaabbbbeeeellll))))))))
  569.                          ddddaaaaddddddddiiiiuuuu  ggggpppp,,,, ggggpppp,,,, %%%%lllloooo((((%%%%ggggpppp____rrrreeeellll((((llllaaaabbbbeeeellll))))))))
  570.                          ddddaaaadddddddduuuu   ggggpppp,,,, ggggpppp,,,, rrrreeeegggg
  571.  
  572.                        +o  ._c_p_r_e_t_u_r_n
  573.  
  574.                          This directive expands into:
  575.  
  576.                          lllldddd      ggggpppp,,,, ooooffffffffsssseeeetttt((((sssspppp))))
  577.  
  578.                          where "offset" is the same value used in
  579.                          the previous .cpsetup.
  580.  
  581.                        +o The .cpsetup/.cpreturn sequence replaces
  582.                          the .cpload/.cprestore sequence that is
  583.                          used in 32-bit PIC code.
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.                                                - 10 -
  597.  
  598.  
  599.  
  600.                        +o The other new directive is
  601.                           ._c_p_l_o_c_a_l _r_e_g_1
  602.  
  603.                          It specifies a register (typically not $gp)
  604.                          to be used as context pointer.  It has
  605.                          effect only within a procedure (i.e., it is
  606.                          turned off automatically at the end of each
  607.                          procedure).
  608.  
  609.                          There are two new directives in the 7.00
  610.                          -n32/-64 assembler:
  611.  
  612.                        +o  ._d_y_n_s_y_m _n_a_m_e _v_a_l_u_e
  613.  
  614.                          This specifies the st_other field of the
  615.                          symbol, which can be "sto_default",
  616.                          "sto_internal", "sto_hidden", or
  617.                          "sto_protected".
  618.  
  619.                        +o  ._g_p_v_a_l_u_e _v_a_l_u_e
  620.  
  621.                          The gp value is used in %gp_rel relocations
  622.                          as an offset for the addend.  By default
  623.                          the value is 0.
  624.  
  625.                          Chapter 8 of the _M_I_P_S_p_r_o _A_s_s_e_m_b_l_y _L_a_n_g_u_a_g_e
  626.                          _G_u_i_d_e contains descriptions of all of the
  627.                          directives supported by the assembler.
  628.  
  629.                        +o The _M_I_P_S_p_r_o _N_3_2 _A_B_I _H_a_n_d_b_o_o_k and the
  630.                          _M_I_P_S_p_r_o _6_4-_b_i_t _P_o_r_t_i_n_g _a_n_d _T_r_a_n_s_i_t_i_o_n _G_u_i_d_e
  631.                          contain examples of how to write assembly
  632.                          language programs for the the N32 and 64-
  633.                          bit ABI's respectively.
  634.  
  635.                     3.12  _L_i_b_r_a_r_i_e_s
  636.  
  637.                     The following changes to the libraries that are
  638.                     part of the compiler system were made in the 7.1
  639.                     release.
  640.  
  641.  
  642.                     3.12.1  _R_e_p_a_c_k_a_g_i_n_g__o_f__N_3_2__S_u_b_s_y_s_t_e_m_s   The
  643.                     _c_o_m_p_i_l_e_r__d_e_v._s_w_3_2 subsystems have been bundled
  644.                     into the _c_o_m_p_i_l_e_r__d_e_v._s_w subsystems and are no
  645.                     longer present as independent subsystems.
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.                                                - 11 -
  663.  
  664.  
  665.  
  666.                     3.12.2  _D_i_s_c_o_n_t_i_n_u_a_n_c_e _o_f _N_3_2 _a_n_d _6_4-_b_i_t _N_o_n-
  667.                     _s_h_a_r_e_d _L_i_b_r_a_r_i_e_s   N32 and 64-bit versions of
  668.                     non-shared libraries for SPEC
  669.                     (_c_o_m_p_i_l_e_r__d_e_v._s_w_3_2._s_p_e_c_l_i_b and
  670.                     _c_o_m_p_i_l_e_r__d_e_v._s_w_6_4._s_p_e_c_l_i_b) are no longer being
  671.                     shipped.
  672.  
  673.                     The following changes to the libraries that are
  674.                     part of the compiler system were made in the 6.2
  675.                     release.
  676.  
  677.                        +o The floating point exception handler
  678.                          package (libfpe) has been rewritten and
  679.                          released with support for programs compiled
  680.                          under ----mmmmiiiippppssss3333 or ----mmmmiiiippppssss4444. Refer to the
  681.                          _f_s_i_g_f_p_e(3f) and _h_a_n_d_l_e__s_i_g_f_p_e_s(3c) man
  682.                          pages.
  683.  
  684.                        +o Fast floating point libraries (libfastm)
  685.                          tuned for the R5000, R8000 and R10000,
  686.                          respectively, are now available when doing
  687.                          compilation for the 64-bit and N32 ABI's.
  688.                          New ----rrrr5555000000000000, ----rrrr8888000000000000 and ----rrrr11110000000000000000 compiler
  689.                          flags are provided which add the paths of
  690.                          these libraries to the head of the library
  691.                          search path. For more information refer to
  692.                          the _c_c(1) and _f_7_7(1) man pages.
  693.  
  694.                     3.13  _P_e_r_f_o_r_m_a_n_c_e__T_o_o_l_s
  695.  
  696.                     This section includes changes to _p_i_x_i_e(1),
  697.                     _p_i_x_s_t_a_t_s(1), _p_r_o_f(1).
  698.  
  699.                        +o As of the 7.0 release, _p_i_x_i_e(1),
  700.                          _p_i_x_s_t_a_t_s(1), and _p_r_o_f(1) are no longer
  701.                          supported. Their functionality has been
  702.                          integrated into a new product called
  703.                          SpeedShop. Interested users are referred to
  704.                          SpeedShop's release notes for more
  705.                          information.
  706.  
  707.  
  708.                     3.14  _L_i_b_r_a_r_y__a_n_d__S_y_s_t_e_m__C_a_l_l__F_u_n_c_t_i_o_n_a_l_i_t_y
  709.  
  710.                     The following additions and changes were made to
  711.                     library and system call functionality between
  712.                     versions 5.3 and 6.2 of the IRIS Development
  713.                     Option (now being replaced by the IRIX
  714.                     Development Foundation).
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.                                                - 12 -
  729.  
  730.  
  731.  
  732.                        +o The MIPSpro C compiler supports long double
  733.                          arithmetic using the ANSI C standard
  734.                          syntax.  Most of the standard
  735.                          transcendental functions in _l_i_b_m and _l_i_b_c
  736.                          are supported. See specific man pages for
  737.                          names and prototypes.  Most of the long
  738.                          double routines are named by prefixing the
  739.                          letter 'q' to the double precision
  740.                          routine's name; for example, _q_s_i_n is the
  741.                          long double version of _s_i_n.
  742.  
  743.                          The following long double routines are NOT
  744.                          supported in this release:  _a_c_o_s_h, _a_s_i_n_h,
  745.                          _a_t_a_n_h, _c_b_r_t, _d_r_a_n_d_4_8, _d_r_e_m, _e_r_a_n_d_4_8, _e_x_p_m_1.
  746.  
  747.                          See the man page for _m_a_t_h(3M) for details
  748.                          regarding long double arithmetic.  Note
  749.                          that long double operations on this system
  750.                          are only supported in "round to nearest
  751.                          rounding" mode (the default).  The system
  752.                          must be in "round to nearest rounding" mode
  753.                          when issuing long double arithmetic
  754.                          operations or calling any of the long
  755.                          double functions, or incorrect answers will
  756.                          result.
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.